#ifndef _SYS_LOCALE_H_
#define _SYS_LOCALE_H_

#include "FanObj.h"
#include "SysTypes.h"

#define LOCALE_VTABLE(self)   ((LocaleVTable*)((FanObj*)self)->vtable)


extern Type*    Locale_classType;
extern VTable*  Locale_classVTable;


/* [sys::Locale] Attributes */
struct Locale
{
  FanObj        super;
};


/* [sys::Locale] Virtual-table */
typedef struct LocaleVTable
{
  FanObjVTable  super;
} LocaleVTable;


/* [sys::Locale] Methods and fields */
Bool            Locale_equals(Obj self, NullableObj obj);
Int             Locale_hash(Obj self);
Str*            Locale_toStr(Obj self);
Locale*         Locale_fromStr_1(Str* s);
Locale*         Locale_fromStr(Str* s, Bool checked);
Locale*         Locale_cur(void);
void            Locale_setCur(Locale* locale);
Locale*         Locale_use(Locale* self, Func* func);
Str*            Locale_lang(Locale* self);
Str*            Locale_country(Locale* self);


/* [sys::Locale] Type-system functions */
Type*           Locale_initType(void);
VTable*         Locale_initVTable(void);
void            Locale_initStatic(void);


#endif
